from detectron2.data.datasets.register_coco import register_coco_instances
import os

categories = [
{'id': 1, 'name': 'person'},
 {'id': 2, 'name': 'sneakers'},
 {'id': 3, 'name': 'chair'},
 {'id': 4, 'name': 'hat'},
 {'id': 5, 'name': 'lamp'},
 {'id': 6, 'name': 'bottle'},
 {'id': 7, 'name': 'cabinet/shelf'},
 {'id': 8, 'name': 'cup'},
 {'id': 9, 'name': 'car'},
 {'id': 10, 'name': 'glasses'},
 {'id': 11, 'name': 'picture/frame'},
 {'id': 12, 'name': 'desk'},
 {'id': 13, 'name': 'handbag'},
 {'id': 14, 'name': 'street lights'},
 {'id': 15, 'name': 'book'},
 {'id': 16, 'name': 'plate'},
 {'id': 17, 'name': 'helmet'},
 {'id': 18, 'name': 'leather shoes'},
 {'id': 19, 'name': 'pillow'},
 {'id': 20, 'name': 'glove'},
 {'id': 21, 'name': 'potted plant'},
 {'id': 22, 'name': 'bracelet'},
 {'id': 23, 'name': 'flower'},
 {'id': 24, 'name': 'tv'},
 {'id': 25, 'name': 'storage box'},
 {'id': 26, 'name': 'vase'},
 {'id': 27, 'name': 'bench'},
 {'id': 28, 'name': 'wine glass'},
 {'id': 29, 'name': 'boots'},
 {'id': 30, 'name': 'bowl'},
 {'id': 31, 'name': 'dining table'},
 {'id': 32, 'name': 'umbrella'},
 {'id': 33, 'name': 'boat'},
 {'id': 34, 'name': 'flag'},
 {'id': 35, 'name': 'speaker'},
 {'id': 36, 'name': 'trash bin/can'},
 {'id': 37, 'name': 'stool'},
 {'id': 38, 'name': 'backpack'},
 {'id': 39, 'name': 'couch'},
 {'id': 40, 'name': 'belt'},
 {'id': 41, 'name': 'carpet'},
 {'id': 42, 'name': 'basket'},
 {'id': 43, 'name': 'towel/napkin'},
 {'id': 44, 'name': 'slippers'},
 {'id': 45, 'name': 'barrel/bucket'},
 {'id': 46, 'name': 'coffee table'},
 {'id': 47, 'name': 'suv'},
 {'id': 48, 'name': 'toy'},
 {'id': 49, 'name': 'tie'},
 {'id': 50, 'name': 'bed'},
 {'id': 51, 'name': 'traffic light'},
 {'id': 52, 'name': 'pen/pencil'},
 {'id': 53, 'name': 'microphone'},
 {'id': 54, 'name': 'sandals'},
 {'id': 55, 'name': 'canned'},
 {'id': 56, 'name': 'necklace'},
 {'id': 57, 'name': 'mirror'},
 {'id': 58, 'name': 'faucet'},
 {'id': 59, 'name': 'bicycle'},
 {'id': 60, 'name': 'bread'},
 {'id': 61, 'name': 'high heels'},
 {'id': 62, 'name': 'ring'},
 {'id': 63, 'name': 'van'},
 {'id': 64, 'name': 'watch'},
 {'id': 65, 'name': 'sink'},
 {'id': 66, 'name': 'horse'},
 {'id': 67, 'name': 'fish'},
 {'id': 68, 'name': 'apple'},
 {'id': 69, 'name': 'camera'},
 {'id': 70, 'name': 'candle'},
 {'id': 71, 'name': 'teddy bear'},
 {'id': 72, 'name': 'cake'},
 {'id': 73, 'name': 'motorcycle'},
 {'id': 74, 'name': 'wild bird'},
 {'id': 75, 'name': 'laptop'},
 {'id': 76, 'name': 'knife'},
 {'id': 77, 'name': 'traffic sign'},
 {'id': 78, 'name': 'cell phone'},
 {'id': 79, 'name': 'paddle'},
 {'id': 80, 'name': 'truck'},
 {'id': 81, 'name': 'cow'},
 {'id': 82, 'name': 'power outlet'},
 {'id': 83, 'name': 'clock'},
 {'id': 84, 'name': 'drum'},
 {'id': 85, 'name': 'fork'},
 {'id': 86, 'name': 'bus'},
 {'id': 87, 'name': 'hanger'},
 {'id': 88, 'name': 'nightstand'},
 {'id': 89, 'name': 'pot/pan'},
 {'id': 90, 'name': 'sheep'},
 {'id': 91, 'name': 'guitar'},
 {'id': 92, 'name': 'traffic cone'},
 {'id': 93, 'name': 'tea pot'},
 {'id': 94, 'name': 'keyboard'},
 {'id': 95, 'name': 'tripod'},
 {'id': 96, 'name': 'hockey'},
 {'id': 97, 'name': 'fan'},
 {'id': 98, 'name': 'dog'},
 {'id': 99, 'name': 'spoon'},
 {'id': 100, 'name': 'blackboard/whiteboard'},
 {'id': 101, 'name': 'balloon'},
 {'id': 102, 'name': 'air conditioner'},
 {'id': 103, 'name': 'cymbal'},
 {'id': 104, 'name': 'mouse'},
 {'id': 105, 'name': 'telephone'},
 {'id': 106, 'name': 'pickup truck'},
 {'id': 107, 'name': 'orange'},
 {'id': 108, 'name': 'banana'},
 {'id': 109, 'name': 'airplane'},
 {'id': 110, 'name': 'luggage'},
 {'id': 111, 'name': 'skis'},
 {'id': 112, 'name': 'soccer'},
 {'id': 113, 'name': 'trolley'},
 {'id': 114, 'name': 'oven'},
 {'id': 115, 'name': 'remote'},
 {'id': 116, 'name': 'baseball glove'},
 {'id': 117, 'name': 'paper towel'},
 {'id': 118, 'name': 'refrigerator'},
 {'id': 119, 'name': 'train'},
 {'id': 120, 'name': 'tomato'},
 {'id': 121, 'name': 'machinery vehicle'},
 {'id': 122, 'name': 'tent'},
 {'id': 123, 'name': 'shampoo/shower gel'},
 {'id': 124, 'name': 'head phone'},
 {'id': 125, 'name': 'lantern'},
 {'id': 126, 'name': 'donut'},
 {'id': 127, 'name': 'cleaning products'},
 {'id': 128, 'name': 'sailboat'},
 {'id': 129, 'name': 'tangerine'},
 {'id': 130, 'name': 'pizza'},
 {'id': 131, 'name': 'kite'},
 {'id': 132, 'name': 'computer box'},
 {'id': 133, 'name': 'elephant'},
 {'id': 134, 'name': 'toiletries'},
 {'id': 135, 'name': 'gas stove'},
 {'id': 136, 'name': 'broccoli'},
 {'id': 137, 'name': 'toilet'},
 {'id': 138, 'name': 'stroller'},
 {'id': 139, 'name': 'shovel'},
 {'id': 140, 'name': 'baseball bat'},
 {'id': 141, 'name': 'microwave'},
 {'id': 142, 'name': 'skateboard'},
 {'id': 143, 'name': 'surfboard'},
 {'id': 144, 'name': 'surveillance camera'},
 {'id': 145, 'name': 'gun'},
 {'id': 146, 'name': 'life saver'},
 {'id': 147, 'name': 'cat'},
 {'id': 148, 'name': 'lemon'},
 {'id': 149, 'name': 'liquid soap'},
 {'id': 150, 'name': 'zebra'},
 {'id': 151, 'name': 'duck'},
 {'id': 152, 'name': 'sports car'},
 {'id': 153, 'name': 'giraffe'},
 {'id': 154, 'name': 'pumpkin'},
 {'id': 155, 'name': 'piano'},
 {'id': 156, 'name': 'stop sign'},
 {'id': 157, 'name': 'radiator'},
 {'id': 158, 'name': 'converter'},
 {'id': 159, 'name': 'tissue '},
 {'id': 160, 'name': 'carrot'},
 {'id': 161, 'name': 'washing machine'},
 {'id': 162, 'name': 'vent'},
 {'id': 163, 'name': 'cookies'},
 {'id': 164, 'name': 'cutting/chopping board'},
 {'id': 165, 'name': 'tennis racket'},
 {'id': 166, 'name': 'candy'},
 {'id': 167, 'name': 'skating and skiing shoes'},
 {'id': 168, 'name': 'scissors'},
 {'id': 169, 'name': 'folder'},
 {'id': 170, 'name': 'baseball'},
 {'id': 171, 'name': 'strawberry'},
 {'id': 172, 'name': 'bow tie'},
 {'id': 173, 'name': 'pigeon'},
 {'id': 174, 'name': 'pepper'},
 {'id': 175, 'name': 'coffee machine'},
 {'id': 176, 'name': 'bathtub'},
 {'id': 177, 'name': 'snowboard'},
 {'id': 178, 'name': 'suitcase'},
 {'id': 179, 'name': 'grapes'},
 {'id': 180, 'name': 'ladder'},
 {'id': 181, 'name': 'pear'},
 {'id': 182, 'name': 'american football'},
 {'id': 183, 'name': 'basketball'},
 {'id': 184, 'name': 'potato'},
 {'id': 185, 'name': 'paint brush'},
 {'id': 186, 'name': 'printer'},
 {'id': 187, 'name': 'billiards'},
 {'id': 188, 'name': 'fire hydrant'},
 {'id': 189, 'name': 'goose'},
 {'id': 190, 'name': 'projector'},
 {'id': 191, 'name': 'sausage'},
 {'id': 192, 'name': 'fire extinguisher'},
 {'id': 193, 'name': 'extension cord'},
 {'id': 194, 'name': 'facial mask'},
 {'id': 195, 'name': 'tennis ball'},
 {'id': 196, 'name': 'chopsticks'},
 {'id': 197, 'name': 'electronic stove and gas stove'},
 {'id': 198, 'name': 'pie'},
 {'id': 199, 'name': 'frisbee'},
 {'id': 200, 'name': 'kettle'},
 {'id': 201, 'name': 'hamburger'},
 {'id': 202, 'name': 'golf club'},
 {'id': 203, 'name': 'cucumber'},
 {'id': 204, 'name': 'clutch'},
 {'id': 205, 'name': 'blender'},
 {'id': 206, 'name': 'tong'},
 {'id': 207, 'name': 'slide'},
 {'id': 208, 'name': 'hot dog'},
 {'id': 209, 'name': 'toothbrush'},
 {'id': 210, 'name': 'facial cleanser'},
 {'id': 211, 'name': 'mango'},
 {'id': 212, 'name': 'deer'},
 {'id': 213, 'name': 'egg'},
 {'id': 214, 'name': 'violin'},
 {'id': 215, 'name': 'marker'},
 {'id': 216, 'name': 'ship'},
 {'id': 217, 'name': 'chicken'},
 {'id': 218, 'name': 'onion'},
 {'id': 219, 'name': 'ice cream'},
 {'id': 220, 'name': 'tape'},
 {'id': 221, 'name': 'wheelchair'},
 {'id': 222, 'name': 'plum'},
 {'id': 223, 'name': 'bar soap'},
 {'id': 224, 'name': 'scale'},
 {'id': 225, 'name': 'watermelon'},
 {'id': 226, 'name': 'cabbage'},
 {'id': 227, 'name': 'router/modem'},
 {'id': 228, 'name': 'golf ball'},
 {'id': 229, 'name': 'pine apple'},
 {'id': 230, 'name': 'crane'},
 {'id': 231, 'name': 'fire truck'},
 {'id': 232, 'name': 'peach'},
 {'id': 233, 'name': 'cello'},
 {'id': 234, 'name': 'notepaper'},
 {'id': 235, 'name': 'tricycle'},
 {'id': 236, 'name': 'toaster'},
 {'id': 237, 'name': 'helicopter'},
 {'id': 238, 'name': 'green beans'},
 {'id': 239, 'name': 'brush'},
 {'id': 240, 'name': 'carriage'},
 {'id': 241, 'name': 'cigar'},
 {'id': 242, 'name': 'earphone'},
 {'id': 243, 'name': 'penguin'},
 {'id': 244, 'name': 'hurdle'},
 {'id': 245, 'name': 'swing'},
 {'id': 246, 'name': 'radio'},
 {'id': 247, 'name': 'CD'},
 {'id': 248, 'name': 'parking meter'},
 {'id': 249, 'name': 'swan'},
 {'id': 250, 'name': 'garlic'},
 {'id': 251, 'name': 'french fries'},
 {'id': 252, 'name': 'horn'},
 {'id': 253, 'name': 'avocado'},
 {'id': 254, 'name': 'saxophone'},
 {'id': 255, 'name': 'trumpet'},
 {'id': 256, 'name': 'sandwich'},
 {'id': 257, 'name': 'cue'},
 {'id': 258, 'name': 'kiwi fruit'},
 {'id': 259, 'name': 'bear'},
 {'id': 260, 'name': 'fishing rod'},
 {'id': 261, 'name': 'cherry'},
 {'id': 262, 'name': 'tablet'},
 {'id': 263, 'name': 'green vegetables'},
 {'id': 264, 'name': 'nuts'},
 {'id': 265, 'name': 'corn'},
 {'id': 266, 'name': 'key'},
 {'id': 267, 'name': 'screwdriver'},
 {'id': 268, 'name': 'globe'},
 {'id': 269, 'name': 'broom'},
 {'id': 270, 'name': 'pliers'},
 {'id': 271, 'name': 'volleyball'},
 {'id': 272, 'name': 'hammer'},
 {'id': 273, 'name': 'eggplant'},
 {'id': 274, 'name': 'trophy'},
 {'id': 275, 'name': 'dates'},
 {'id': 276, 'name': 'board eraser'},
 {'id': 277, 'name': 'rice'},
 {'id': 278, 'name': 'tape measure/ruler'},
 {'id': 279, 'name': 'dumbbell'},
 {'id': 280, 'name': 'hamimelon'},
 {'id': 281, 'name': 'stapler'},
 {'id': 282, 'name': 'camel'},
 {'id': 283, 'name': 'lettuce'},
 {'id': 284, 'name': 'goldfish'},
 {'id': 285, 'name': 'meat balls'},
 {'id': 286, 'name': 'medal'},
 {'id': 287, 'name': 'toothpaste'},
 {'id': 288, 'name': 'antelope'},
 {'id': 289, 'name': 'shrimp'},
 {'id': 290, 'name': 'rickshaw'},
 {'id': 291, 'name': 'trombone'},
 {'id': 292, 'name': 'pomegranate'},
 {'id': 293, 'name': 'coconut'},
 {'id': 294, 'name': 'jellyfish'},
 {'id': 295, 'name': 'mushroom'},
 {'id': 296, 'name': 'calculator'},
 {'id': 297, 'name': 'treadmill'},
 {'id': 298, 'name': 'butterfly'},
 {'id': 299, 'name': 'egg tart'},
 {'id': 300, 'name': 'cheese'},
 {'id': 301, 'name': 'pig'},
 {'id': 302, 'name': 'pomelo'},
 {'id': 303, 'name': 'race car'},
 {'id': 304, 'name': 'rice cooker'},
 {'id': 305, 'name': 'tuba'},
 {'id': 306, 'name': 'crosswalk sign'},
 {'id': 307, 'name': 'papaya'},
 {'id': 308, 'name': 'hair drier'},
 {'id': 309, 'name': 'green onion'},
 {'id': 310, 'name': 'chips'},
 {'id': 311, 'name': 'dolphin'},
 {'id': 312, 'name': 'sushi'},
 {'id': 313, 'name': 'urinal'},
 {'id': 314, 'name': 'donkey'},
 {'id': 315, 'name': 'electric drill'},
 {'id': 316, 'name': 'spring rolls'},
 {'id': 317, 'name': 'tortoise/turtle'},
 {'id': 318, 'name': 'parrot'},
 {'id': 319, 'name': 'flute'},
 {'id': 320, 'name': 'measuring cup'},
 {'id': 321, 'name': 'shark'},
 {'id': 322, 'name': 'steak'},
 {'id': 323, 'name': 'poker card'},
 {'id': 324, 'name': 'binoculars'},
 {'id': 325, 'name': 'llama'},
 {'id': 326, 'name': 'radish'},
 {'id': 327, 'name': 'noodles'},
 {'id': 328, 'name': 'yak'},
 {'id': 329, 'name': 'mop'},
 {'id': 330, 'name': 'crab'},
 {'id': 331, 'name': 'microscope'},
 {'id': 332, 'name': 'barbell'},
 {'id': 333, 'name': 'bread/bun'},
 {'id': 334, 'name': 'baozi'},
 {'id': 335, 'name': 'lion'},
 {'id': 336, 'name': 'red cabbage'},
 {'id': 337, 'name': 'polar bear'},
 {'id': 338, 'name': 'lighter'},
 {'id': 339, 'name': 'seal'},
 {'id': 340, 'name': 'mangosteen'},
 {'id': 341, 'name': 'comb'},
 {'id': 342, 'name': 'eraser'},
 {'id': 343, 'name': 'pitaya'},
 {'id': 344, 'name': 'scallop'},
 {'id': 345, 'name': 'pencil case'},
 {'id': 346, 'name': 'saw'},
 {'id': 347, 'name': 'table tennis paddle'},
 {'id': 348, 'name': 'okra'},
 {'id': 349, 'name': 'starfish'},
 {'id': 350, 'name': 'eagle'},
 {'id': 351, 'name': 'monkey'},
 {'id': 352, 'name': 'durian'},
 {'id': 353, 'name': 'game board'},
 {'id': 354, 'name': 'rabbit'},
 {'id': 355, 'name': 'french horn'},
 {'id': 356, 'name': 'ambulance'},
 {'id': 357, 'name': 'asparagus'},
 {'id': 358, 'name': 'hoverboard'},
 {'id': 359, 'name': 'pasta'},
 {'id': 360, 'name': 'target'},
 {'id': 361, 'name': 'hotair balloon'},
 {'id': 362, 'name': 'chainsaw'},
 {'id': 363, 'name': 'lobster'},
 {'id': 364, 'name': 'iron'},
 {'id': 365, 'name': 'flashlight'}]

def _get_builtin_metadata_obj365v1():
    id_to_name = {x['id']: x['name'] for x in categories}
    thing_dataset_id_to_contiguous_id = {i + 1: i for i in range(365)}
    thing_classes = [id_to_name[k] for k in sorted(id_to_name)]
    return {
        "thing_dataset_id_to_contiguous_id": thing_dataset_id_to_contiguous_id,
        "thing_classes": thing_classes}

_PREDEFINED_SPLITS_OBJECTS365 = {
    "objects365_train": ("objects365/train", "objects365/annotations/objects365_train.json"),
    "objects365_val": ("objects365/val", "objects365/annotations/objects365_val.json"),
}

# for key, (image_root, json_file) in _PREDEFINED_SPLITS_OBJECTS365.items():
#     register_coco_instances(
#         key,
#         _get_builtin_metadata(),
#         os.path.join("datasets", json_file) if "://" not in json_file else json_file,
#         os.path.join("datasets", image_root),
#     )
